home *** CD-ROM | disk | FTP | other *** search
- Path: newsfeed.tip.net!usenet
- From: mikael.berglund@amiga.pp.se (Mikael Berglund)
- Newsgroups: comp.sys.amiga.programmer
- Subject: Bug in SAS/C 6.56?
- Date: 21 Apr 1996 11:29:16 GMT
- Organization: Uniplus Internet Access
- Message-ID: <2092.6684T1168T988@amiga.pp.se>
- NNTP-Posting-Host: a711011.dial.tip.net
- X-Newsreader: THOR 2.22 (Amiga;TCP/IP) *UNREGISTERED*
-
- I have a function in a shared library and the setup before the call is like
- this:
-
- 183: if ( ( _failure = Skip2Project( _sfh, filename, _tfh,
- _fnbuffer, project, 0, NULL ) ) == FALSE )
- 0x7EF425E <ProcessProject+0xF6>: MOVEM.L A2-A3,-(A7)
- 0x7EF4262 <ProcessProject+0xFA>: MOVE.L A3,D0
- 0x7EF4264 <ProcessProject+0xFC>: MOVEA.L A2,A3
- ; ***** WATCH THIS! (LINE BELOW) *****
- 0x7EF4266 <ProcessProject+0xFE>: MOVEA.L D6,A0
- 0x7EF4268 <ProcessProject+0x...: MOVEA.L A5,A1
- 0x7EF426A <ProcessProject+0x...: MOVEA.L D5,A2
- 0x7EF426C <ProcessProject+0x...: MOVEQ #00,D1
- 0x7EF426E <ProcessProject+0x...: MOVEQ #00,D2
- 0x7EF4270 <ProcessProject+0x...: MOVEA.L 002C(A7),A6
- 0x7EF4274 <ProcessProject+0x...: BSR.W 0x7EF4350 <Skip2Project>
-
- As one can see, the register A0 is now properly set with the value of D6
- (which have been verified to hold the right value)
-
- 224: BOOL _ asm Skip2Project(
- 225: AREG_A0 BPTR sfh,
- 226: AREG_A1 STRPTR sfn,
- 227: AREG_A2 BPTR tfh,
- 228: AREG_A3 STRPTR tfn,
- 229: AREG_D0 XPMLP *project,
- 230: AREG_D1 ULONG mode,
- 231: AREG_D2 STRPTR buffer )
- 0x7EF4350 <Skip2Project>: SUBA.W #0010,A7
- 0x7EF4354 <Skip2Project+0x4>: MOVEM.L D2-D7/A2-A3/A5-A6,-(A7)
- ; **** WHY? (LINE BELOW) ****
- 0x7EF4358 <Skip2Project+0x8>: EXG D2,A0
- 0x7EF435A <Skip2Project+0xA>: MOVE.L D1,D5
- 0x7EF435C <Skip2Project+0xC>: MOVE.L A0,D6
- 0x7EF435E <Skip2Project+0xE>: MOVE.L D0,D7
- 0x7EF4360 <Skip2Project+0x10>: MOVEA.L A1,A5
- 0x7EF4362 <Skip2Project+0x12>: MOVE.L D2,002C(A7)
- 0x7EF4366 <Skip2Project+0x16>: MOVE.L A6,0030(A7)
-
- <USER CODE CONTINUES>
-
- The value of A0 is now something else and naturally the code fails.
- Am i stretching the usage of registers so the compiler makes a mistake?
- One solution would be, which i will try, is to use a quickly set up
- structure to hold the necessary data which takes down the need for
- registers.
-
- --
- Regards TMB PGP public key available
-
-